package com.molichuxing.gateway.bff.goods.services;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.framework.result.ResponseResult;
import com.molichuxing.gateway.bff.goods.entity.request.create.GoodsExclusiveCreateVo;
import com.molichuxing.gateway.bff.goods.entity.request.create.GoodsSubscribeCreateVo;
import com.molichuxing.gateway.bff.goods.entity.response.*;

import java.util.List;
import java.util.Map;

/**
 * 商品信息相关bff
 * 
 * @author yixuelin
 * @date 2019年8月13日
 *
 */
public interface GoodsBffService {

	/**
	 * 获取商品信息列表
	 * @param selectParams
	 * @return
	 */
	Paged<GoodsVo> getGoodsList(Map<String, Object> selectParams);

	/**
	 * 获取商品基础信息
	 * @param goodsId
	 * @return
	 * @throws Exception
	 */
	public GoodsBaseVo getBaseGoods(Integer goodsId) throws Exception;

	/**
	 * 获取商品详细信息
	 * @param goodsId
	 * @return
	 * @throws Exception
	 */
	public GoodsDetailVo getDetailGoods(Integer goodsId)throws Exception ;

	/**
	 * 新增专属商品信息列表
	 * @param createDto
	 * @return
	 * @throws Exception
	 */
	public Boolean createExclusiveGoods(List<GoodsExclusiveCreateVo> createDto) throws Exception;

	/**
	 * 新增订阅商品信息列表
	 * @param createDto
	 * @return
	 * @throws Exception
	 */
	public Boolean createSubscribeGoods(List<GoodsSubscribeCreateVo> createDto) throws Exception;

	/**
	 * 设置商品禁售状态
	 * @param goodsId
	 * @param isForbidSale
	 * @return
	 * @throws Exception
	 */
	public Boolean settingGoodsSale(int goodsId, Byte isForbidSale) throws Exception;

	/**
	 * 根据规格的key和商品类型查询规格信息
	 * @param specList
	 * @param goodsType
	 * @return
	 * @throws Exception
	 */
	public List<GoodsSpecConfigVo> getGoodsProductSpecList(List<String> specList, int goodsType) throws Exception;

    /**
     * 根据业务类型查询合同信息
     * @param businessType
     * @return
     */
	public Paged<ContractTemplateVo> getContractTemplateList(Integer businessType);
}
